package manage.modules.role.service;

import java.util.List;
import java.util.Map;

import manage.commons.utils.Pager;
import manage.modules.role.model.Role;

public interface RoleService {
	Role select(Integer roleId);

	int insert(Role role);

	int update(Role role);

	/**
	 * 删除角色后需要删除其对应权限关系表中的WorkerOfRole,MenuOfRole,ActionOfRole
	 * 
	 * @param roleId
	 * @return
	 */
	int delete(Integer roleId);

	List<Role> listAll();

	boolean exists(Integer roleId);

	Long getCountOfAll();

	void query(Role role, Pager<Role> pager);

	void query(Map<String, String> param,
			Pager<Map<String, Object>> pager);

	List<Role> listRoleByWorkerId(Long workerId);

	List<Map<String, Object>> listMenuOfRole(Integer roleId, Integer menuId);

	List<Map<String, Object>> listMenuOfRoleByRoleId(Integer roleId);

	List<Map<String, Object>> listWorkerbyRoleId(Integer roleId);

	List<Map<String, Object>> listMenuOfRoleByMenuId(Integer menuId);

	int deleteActionOfRoleByRoleId(Integer roleId);

	int deleteWorkerOfRoleByRoleId(Integer roleId);

	int deleteMenuOfRoleByRoleId(Integer roleId);

	/**
	 * 员工赋予角色
	 * 
	 * @param roleId
	 * @param workerIds
	 */
	void addWorkerToRole(Integer roleId, Long[] workerIds);

	/**
	 * 员工减少角色
	 * 
	 * @param roleId
	 * @param workerIds
	 */
	void deleteWorkerFromRole(Integer roleId, Long[] workerIds);
}
